package dao;

import pojo.Goods;

import java.util.List;

/**
 * @author CaiKe
 * @create 2021/1/8
 */
public interface GoodsDAO {

    /**
     * 添加商品
     * @param goods 商品对象
     * @return 成功返回 1，失败返回 0
     */
    Integer addGoods(Goods goods);

    /**
     * 根据 id 删除商品
     * @param id 目标商品的 id
     * @return 成功返回 1，失败返回 0
     */
    Integer deleteGoodsById(int id);

    /**
     * 商品出（入）库
     * @param id 出库商品的id
     * @param num 库存的数量
     * @return 成功返回 1，失败返回 0
     */
    Integer portGoods(int id, int num);

    /**
     * 查找商品的库存
     * @param id 商品id
     * @return 库存
     */
    Integer queryGoodsNumById(int id);

    /**
     * 更新商品、添加商品
     * @param goods
     * @return
     */
    Integer updateGoods(Goods goods);

    /**
     * 通过商品 id 查找商品
     * @param id 商品 id
     * @return 商品对象
     */
    Goods queryGoodsById(int id);

    /**
     * 查找所有商品信息
     * @return 所有商品信息的列表
     */
    List<Goods> queryAllGoods();

    /**
     * 查询指定用户或者仓库的所有 商品
     * @param aimId 目标的id
     * @param chose 0则表示用户id，1则表示仓库id
     * @return 商品列表
     */
    List<Goods> queryAllGoods(int aimId, int chose);

    /**
     * 查询所有商品的总数量
     * @return 商品数量，失败则返回 null
     */
    Integer queryForGoodsNum();

    /**
     * 查询最近的 num 条商品信息
     * @param num 最近几条
     * @return 商品对象
     */
    List<Goods> queryLatestGoods(int num);

//    /**
//     * 查询指定用户的最近的 num 条商品信息
//     * @param num 最近几条
//     * @@param account 用户账号
//     * @return 商品对象
//     */
//    List<Goods> queryLatestGoodsByOwnerId(int account, int num);

    /**
     * 根据storeId删除商品
     * @param storeId 仓库id
     * @return 删除的数量，如果为0表示删除失败或仓库内无商品
     */
    Integer deleteGoodsByStoreId(int storeId);

}
